//package com.yesep.utils;
//
//import com.yjkj.envm.Constants;
//import com.yjkj.envm.data.model.SiteModel;
//import com.yjkj.envm.env.model.EnvFactor;
//import com.yjkj.envm.env.model.EnvFactorFlag;
//import com.yjkj.envm.env.model.EnvStandard;
//import com.yjkj.envm.env.service.EnvFactorFlagManager;
//import com.yjkj.envm.env.service.EnvFactorManager;
//import com.yjkj.envm.env.service.EnvSiteManager;
//import com.yjkj.envm.env.service.EnvStandardManager;
//import com.yjkj.envm.env.vo.EnvFactorFlagQuery;
//import com.yjkj.envm.env.vo.EnvStandardQuery;
//import com.yjkj.envm.sys.model.SysConfig;
//import com.yjkj.envm.sys.model.SysMetadata;
//import com.yjkj.envm.sys.model.SysMetadataClass;
//import com.yjkj.envm.sys.service.SysConfigManager;
//import com.yjkj.envm.sys.service.SysMetadataClassManager;
//import com.yjkj.envm.sys.service.SysMetadataManager;
//import com.yjkj.envm.sys.vo.SysConfigQuery;
//import com.yjkj.envm.sys.vo.SysMetadataClassQuery;
//import com.yjkj.envm.sys.vo.SysMetadataQuery;
//import com.yjkj.utils.CacheUtils;
//import net.sf.json.JSONArray;
//import org.apache.commons.beanutils.BeanComparator;
//import org.apache.commons.collections.comparators.ComparableComparator;
//
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.Comparator;
//import java.util.List;
//
//public class SysCacheUtils {
//
//	public final static String CACHE_NAME_SYS_CONFIG = "CACHE_NAME_SYS_CONFIG";// 系统配置缓存
//	public final static String CACHE_NAME_SYS_METADATE = "CACHE_NAME_SYS_METADATE";// 系统字典缓存
//	public final static String CACHE_NAME_ENV_FACTORY = "CACHE_NAME_ENV_FACTORY";// 环境因子缓存
//	public final static String CACHE_NAME_ENV_FACTORY_FLAG = "CACHE_NAME_ENV_FACTORY_FLAG";// 环境因子状态缓存
//	public final static String CACHE_NAME_ENV_STANDARD = "CACHE_NAME_ENV_STANDARD";// 环境标准
//	public final static String CACHE_NAME_ENV_SITE = "CACHE_NAME_ENV_SITE";// 站点缓存
//	public static CacheUtils cacheUtils = null;
//
//	public static void init() {
//		loadSysConfig();
//		loadSysMetadata();
//		loadEnvFactor();
//		loadEnvStandard();
//		loadSiteModel();
//		loadEnvFactorFlag();
//	}
//
//	public static CacheUtils getCacheUtils() {
//		if (null == cacheUtils) {
//			cacheUtils = new CacheUtils(SysHelper.getCacheManager());
//		}
//		return cacheUtils;
//	}
//
//	public static void loadSysConfig() {
//		SysConfigManager mgr = SysHelper.getConfigManager();
//		SysConfigQuery vo = new SysConfigQuery();
//		vo.setConfigStatus(Constants.ENABLED_STATUS_01);
//		List<SysConfig> list = mgr.findCondition(vo);
//		for (SysConfig conf : list) {
//			getCacheUtils().put(CACHE_NAME_SYS_CONFIG, conf.getConfigCode(), conf.getConfigValue());
//		}
//	}
//
//	public static String getSysConfig(String code) {
//		return (String) getCacheUtils().get(CACHE_NAME_SYS_CONFIG, code);
//	}
//
//	public static void loadSysMetadata() {
//		SysMetadataManager mdMgr = SysHelper.getMetadataManager();
//		SysMetadataClassManager mgr = SysHelper.getMetadataClassManager();
//		SysMetadataClassQuery query = new SysMetadataClassQuery();
//		query.setMetaStatus(Constants.ENABLED_STATUS_01);
//		List<SysMetadataClass> list = mgr.findCondition(query);
//		for (SysMetadataClass cls : list) {
//			SysMetadataQuery vo = new SysMetadataQuery();
//			vo.setCodeStatus(Constants.ENABLED_STATUS_01);
//			vo.setMetaCode(cls.getMetaCode());
//			getCacheUtils().put(CACHE_NAME_SYS_METADATE, cls.getMetaCode(), mdMgr.findCondition(vo));
//		}
//	}
//
//	public static List<SysMetadata> getSysMetadata(String code) {
//		List<SysMetadata> list = (List<SysMetadata>) getCacheUtils().get(CACHE_NAME_SYS_METADATE, code);
//		return list;
//	}
//
//	public static String getSysMetadataJson(String code) {
//		List<SysMetadata> list = getSysMetadata(code);
//		JSONArray json = JSONArray.fromObject(list);
//		return json.toString();
//	}
//
//	public static SysMetadata getSysMetadata(String code, String val) {
//		List<SysMetadata> list = getSysMetadata(code);
//		SysMetadata meta = null;
//		if (null != list) {
//			for (SysMetadata c : list) {
//				if (c.getCodeVal().equals(val)) {
//					meta = c;
//					break;
//				}
//			}
//		}
//		return meta;
//	}
//
//	public static void loadEnvFactor() {
//		EnvFactorManager mgr = EnvHelper.getEnvFactorManager();
//		List<EnvFactor> list = mgr.findUsedFactor(null, null);
//		for (EnvFactor factor : list) {
//			getCacheUtils().put(CACHE_NAME_ENV_FACTORY, factor.getFactorCode(), factor);
//		}
//	}
//
//	/**
//	 * @param type
//	 *            应用范围， 00=所有因子; 01=水质监测类型因子; 03= 动环监测类型因子; 02= 大气监测类型因子
//	 * @param dataShow
//	 *            数据是否可见，null=所有因子; 01=可见; 02= 不可见
//	 * @return
//	 */
//	public static List<EnvFactor> getEnvFactors(String type, String dataShow) {
//		List<String> list = getCacheUtils().getCacheManager().getCache(CACHE_NAME_ENV_FACTORY).getKeys();
//		List<EnvFactor> factorList = new ArrayList<EnvFactor>();
//		for (String key : list) {
//			EnvFactor f = getEnvFactor(key);
//			if (null != dataShow) {
//				if (!dataShow.equals(f.getFactorShow())) {
//					continue;
//				}
//			}
//			factorList.add(f);
//		}
//		return EnvHelper.getEnvFactorsByType(factorList, type);
//	}
//
//	/**
//	 * @param type
//	 *            应用范围， 00=所有因子; 01=水质监测类型因子; 03= 动环监测类型因子; 02= 大气监测类型因子
//	 * @return
//	 */
//	public static List<EnvFactor> getEnvFactors(String type) {
//		return getEnvFactors(type, null);
//	}
//
//	/**
//	 * 所有数据可见的因子
//	 *
//	 * @param type
//	 *            应用范围， 00=所有因子; 01=水质监测类型因子; 03= 动环监测类型因子; 02= 大气监测类型因子
//	 * @return
//	 */
//	public static List<EnvFactor> getEnvFactorsShow(String type) {
//		return getEnvFactors(type, "01");
//	}
//
//	public static EnvFactor getEnvFactor(String code) {
//		return (EnvFactor) getCacheUtils().get(CACHE_NAME_ENV_FACTORY, code);
//	}
//
//	public static EnvFactor getEnvFactor(Integer id) {
//		EnvFactor f = null;
//		List<EnvFactor> list = getEnvFactors(Constants.FACTOR_TYPE_ALL);
//		for (EnvFactor temp : list) {
////			System.out.println("id:["+id+"]"+" temp.getFactorId():"+temp.getFactorId());
//			if (id.intValue() == temp.getFactorId().intValue()) {
//				f = temp;
//				break;
//			}
//		}
//		return f;
//	}
//
//	public static String getEnvFactorCol(String code) {
//		return getEnvFactor(code).getFactorColumn();
//	}
//
//	private static String getEnvFactorFlagKey(Integer factorId, String flagCode) {
//		return factorId + "_" + flagCode;
//	}
//
//	public static void loadEnvFactorFlag() {
//		EnvFactorFlagManager mgr = EnvHelper.getEnvFactorFlagManager();
//		EnvFactorFlagQuery vo = new EnvFactorFlagQuery();
//		vo.setFlagStatus(Constants.ENABLED_STATUS_01);
//		List<EnvFactorFlag> list = mgr.findCondition(vo);
//		for (EnvFactorFlag flag : list) {
//			getCacheUtils().put(CACHE_NAME_ENV_FACTORY_FLAG, getEnvFactorFlagKey(flag.getFactorId(), flag.getFlagCode()), flag);
//		}
//	}
//
//	public static EnvFactorFlag getEnvFactorFlag(Integer factorId, String flagCode) {
//		return (EnvFactorFlag) getCacheUtils().get(CACHE_NAME_ENV_FACTORY_FLAG, getEnvFactorFlagKey(factorId, flagCode));
//	}
//
//	public static void loadSiteModel() {
//		EnvSiteManager mgr = EnvHelper.getEnvSiteManager();
//		List<SiteModel> list = mgr.findAllSiteMode();
//		for (SiteModel site : list) {
//			SiteModel temp = getSiteModel(site.getMN());
//			if (null != temp) {// 如果当前站点已存在缓存中，需加载在线数据
//				site.setHost(temp.getHost());
//				site.setPW(temp.getPW());
//				site.setMN(temp.getMN());
//				site.setConnectTime(temp.getConnectTime());
//				site.setLastDataTime(temp.getLastDataTime());
//				site.setLastCheckLine(temp.isLastCheckLine());
//				site.setSession(temp.getSession());
//			}
//		}
//
//		getCacheUtils().clean(CACHE_NAME_ENV_SITE);// 先清空所有缓存，防止站点MN修改后存在重复站点
//
//		for (SiteModel site : list) {
//			addSiteModel(site);// 重新加载缓存
//		}
//	}
//
//	public static void addSiteModel(SiteModel site) {
//		SiteModel temp = getSiteModel(site.getMN());
//		if (null != temp) {
//			site.setHost(temp.getHost());
//			site.setPW(temp.getPW());
//			site.setMN(temp.getMN());
//			site.setConnectTime(temp.getConnectTime());
//			site.setLastDataTime(temp.getLastDataTime());
//			site.setLastCheckLine(temp.isLastCheckLine());
//			site.setSession(temp.getSession());
//		}
//		getCacheUtils().put(CACHE_NAME_ENV_SITE, site.getSiteCode(), site);
//	}
//
//	public static SiteModel getSiteModel(String mn) {
//		return (SiteModel) getCacheUtils().get(CACHE_NAME_ENV_SITE, mn);
//	}
//
//	public static SiteModel getSiteModel(Integer id) {
//		SiteModel f = null;
//		List<SiteModel> list = getSiteModels();
//		for (SiteModel temp : list) {
//			if (id.intValue() == temp.getSiteId().intValue()) {
//				f = temp;
//				break;
//			}
//		}
//		return f;
//	}
//
//	public static SiteModel getSiteModelByHost(String host) {
//		SiteModel f = null;
//		List<SiteModel> list = getSiteModels();
//		for (SiteModel temp : list) {
//			if (host.equals(temp.getHost())) {
//				f = temp;
//				break;
//			}
//		}
//		return f;
//	}
//
//	public static List<SiteModel> getSiteModels() {
//		List<String> list = getCacheUtils().getCacheManager().getCache(CACHE_NAME_ENV_SITE).getKeys();
//		List<SiteModel> result = new ArrayList<SiteModel>();
//		for (String key : list) {
//			// System.out.println(key);
//			result.add(getSiteModel(key));
//		}
//		return result;
//	}
//
//	public static void loadEnvStandard() {
//		EnvStandardManager mgr = EnvHelper.getEnvStandardManager();
//		EnvStandardQuery vo = new EnvStandardQuery();
//		vo.setStandardStatus(Constants.ENABLED_STATUS_01);
//		vo.setSortColumns("STANDARD_TYPE,STANDARD_LEVEL_STATUS");
//		List<EnvStandard> list = mgr.findCondition(vo);
//		for (EnvStandard conf : list) {
//			conf.setEnvStandardFactors(mgr.findFactorByStandard(conf.getStandardId()));
//			getCacheUtils().put(CACHE_NAME_ENV_STANDARD, conf.getStandardId().toString(), conf);
//		}
//	}
//
//	public static EnvStandard getEnvStandard(Integer id) {
//		if (null == id)
//			return null;
//		return getEnvStandard(id.toString());
//	}
//
//	public static EnvStandard getEnvStandard(String id) {
//		if (null == id)
//			return null;
//		return (EnvStandard) getCacheUtils().get(CACHE_NAME_ENV_STANDARD, id);
//	}
//
//	public static List<EnvStandard> getEnvStandards(String scope) {
//		List<String> list = getCacheUtils().getCacheManager().getCache(CACHE_NAME_ENV_STANDARD).getKeys();
//		List<EnvStandard> result = new ArrayList<EnvStandard>();
//		for (String key : list) {
//			EnvStandard s = getEnvStandard(key);
//			if (scope.equals(s.getStandardScope())) {
//				result.add(s);
//			}
//		}
//
//		// 从缓存中取中，没有按SQL指定的对象排序，需重新排序
//		Comparator<?> mycmp = ComparableComparator.getInstance();
//		Collections.sort(result, new BeanComparator("standardLevelStatus", mycmp));
//
//		return result;
//	}
//}
